NOTE:
Deprecation of the technologies described here has been announced
for platforms other than ChromeOS.
Please visit our migration guide for details.
Please visit our migration guide for details.
Design Documents
This is a list of design documents for Native Client. This list generally covers designs that were implemented. It does not cover PPAPI (Pepper).
Dynamic loading and linking:
Handling faults (hardware exceptions) in untrusted code:
Sandbox security on Windows:
Debugging using GDB:
- Providing a GDB debug stub integrated into native_client (2012). This was the main design doc for NaCl’s GDB debug stub.
- Native Client Support for Debugging, Crash Reporting and Hardware Exception Handling – high level design (Jan 2012)
- NaCl: three kinds of crash handling (2012). This is an earlier document. It contains notes on trusted vs. untrusted crash handling, vs. GDB support.
PNaCl:
- Stability of the PNaCl bitcode ABI (2013). This is an overview of ABI stability issues and the features of LLVM IR that PNaCl is removing.
- Incrementally simplifying the PNaCl bitcode format (2013)
- SJLJ EH: C++ exception handling in PNaCl using setjmp()+longjmp() (2013)
Security hardening:
- Hiding PNaCl’s x86-64 sandbox base address (2013). This was part of the security hardening we did for enabling PNaCl on the open web.
MIPS support:
Cleanup work:
DEPS rolls:
- Semi-automated NaCl DEPS rolls: Updates to nacl_revision field in Chromium’s DEPS file (2013). This is a description of current practice rather than a design doc.
Obsolete (not implemented)
PNaCl multi-threading support: The following proposals do not reflect what was implemented in PNaCl in the end. They are listed here for historical reference.
- Multi-threading support for a first release of PNaCl (2013): Proposal for mutex_v2/cond_v2 IRT interfaces.
- Explicit vs. implicit atomicity guarantees in PNaCl (2013): Discussion about how to handle atomic memory operations.